在開始撰寫 Ansible Playbooks 前,讓凍仁先來介紹平日會用到的開發工具和相關技巧。
凍仁在「06. 怎麼操作 Ansible?」一文時早有提到 Playbooks 其實是使用 YAML 的語法在撰寫,雖說我們只要有純文字編輯器就可以進行開發,但凍仁還是會藉由些自動補齊 (Auto-complete)、縮排提示、語法 (Syntax) 高亮 (Highlighting) 和檢查 (Check) 等擴充套件工具來補助。
Vim 是凍仁多年來主要使用的文字編輯器,不管是編寫程式、文件還是設定檔都是一套打天下,而現在也用它來開發 Playbooks。凍仁自己除了會在 Terminal 使用 Vim 之外,還會額外安裝 GVim (GNU/Linux, Windows) 和 MacVim (macOS) 來使用 Vim。
▲ 以上為使用 MacVim 撰寫 Playbooks 的 demo,其 colorscheme 為 Tomorrow Night Eighties。
pip
安裝 ansible-lint 來檢查 syntax 和 style。要讓 Syntastic 可以完整支援 Ansible,我們還需安裝 ansible-vim 和 ansible-lint 才行。
使用 pip 安裝 ansible-lint。
$ sudo pip install ansible-lint
使用 NeoBundle 安裝 Syntastic 和 ansible-vim,並調整設定。
$ vi ~/.vimrc
...
" ansible-vim
NeoBundle 'pearofducks/ansible-vim'
" Syntastic
NeoBundle 'scrooloose/syntastic'
let g:syntastic_enable_highlighting = 1
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
" ignore files of Ansible Roles.
let g:syntastic_ignore_files = ['\m^roles/']
Syntastic 的細部設定可從 GitHub 上找到,特別要提一下的是上面多了停止檢查 roles/
目錄的設定,在凍仁的習慣裡 Roles 大多會另外維護,這部份在再往後的章節才會多加說明。
如只想用 Syntastic 來檢查語法錯誤 (syntax error) 而不想檢查 style 的話,可把 style 的部份關掉。
let g:syntastic_quiet_messages = { "type": "style" }
MacDown 是 macOS 上 open source 的 Markdown 文字編輯器,凍仁會在撰寫 README.md
時會用到,但近來發現 Livedown 這個工具後,就比較常用 Vim 在寫 Markdown 文件了。
題外話,凍仁連現在這篇文章都是用 Vim + Livedown 在寫的呢!
Atom 是 GitHub 釋出的 open source 文字編輯器,業界也有不少使用者,凍仁雖不常使用,但它的自動補齊功能非常之強大,若本身沒有在使用 Vim,不妨可以用它來開發 Playbooks。
▲ 以上為使用 Atom 撰寫 Playbooks 的 demo,其 UI Theme 為 One Dark,而 Syntax Theme 為 Tomorrow Night Eighties。
pip
安裝 ansible-lint。在 GNU/Linux 和 macOS 上都已內建 terminal,但凍仁較慣用以下三個 terminal emulator。
Ansible 是 2012 才開始的專案,可 Module 的總數已經高達 836 之多,雖說各個 Module 的使用文件在官網上都查的到,但凍仁還是習慣在本機存一份離線版以備不時之需。
Dash:macOS 上查詢、自動更新 API 文件的工具,其 license 為 US$ 24.99。
Zeal:open source 版的 Dash,支援 GNU/Linux 和 Windows。
DevDocs:網頁版的 Zeal。
LovelyDocs:Android 上類似 Dash 的離線 API 文件瀏覽器。 [^1]
Alfred 3:macOS 上的快捷搜神兵,在此凍仁拿它整合 Dash 以快速搜尋 Ansible 文件。
Git:版本控制系統 (Version Control System),用來紀錄、追蹤 playbooks 版本的工具,這對 Infrastructure as Code 而言是必不可缺的。
[^1]: LovelyDocs 是凍仁 2016/12/24 在 Galaxy Note 3 上逛 Google Play 時找到的 Dash like Apps,其 release 日期為 2016/11/23。